package com.gamefx.utils
{

	/**
	 * ArrayUtil 实用程序类是一个全静态类，其方法用于处理 Flex 内的数组。不创建 ArrayUtil 的实例；只是调用如 ArrayUtil.toArray() 之类的静态方法。
	 *
	 * @author hzf
	 *
	 */
	public class ArrayUtil
	{

		//--------------------------------------------------------------------------
		//
		//  Class methods
		//
		//--------------------------------------------------------------------------

		/**
		 * 确保对象可用作数组。
		 *
		 * <P>如果对象已是数组，则返回该对象。如果对象不是数组，则返回一个该对象为其仅有元素的数组。作为特殊情况，如果该对象为 null,则返回一个空数组。</P>
		 *
		 * @param obj 要确保其为数组的对象。
		 *
		 * @return 一个数组。如果原始对象已是数组，则返回原始数组。否则，将返回一个该对象为其仅有元素的新数组，或者返回一个空数组（如果该对象为 null）。
		 */
		public static function toArray(obj:Object):Array
		{
			if (!obj)
				return [];

			else if (obj is Array)
				return obj as Array;

			else if (obj is Object)
			{
				var arrTemp:Array = [];
				for (var tmp:String in obj)
				{
					arrTemp.push(obj[tmp]);
				}
				return arrTemp;
			}
			return [obj];
		}

		/**
		 * 返回数组中项的索引。
		 *
		 * <P>请注意，在该实现中搜索为线性，因此为 O(n)。</P>
		 *
		 * @param item 要在数组中查找的项。
		 *
		 * @param sourcem 要在其中搜索项的数组。
		 *
		 * @return 项的索引；如果该项不在列表中则返回
		 */
		public static function getItemIndex(item:Object, source:Array):int
		{
			var n:int = source.length;
			for (var i:int = 0; i < n; ++i)
			{
				if (source[i] === item)
					return i;
			}

			return -1;
		}
	}

}
